package 链表;

import common.ListNode;

import java.util.HashSet;
import java.util.Set;

/**
 * @author tmh
 * @date 2024/8/18 22:39
 * @description 思路：遍历两个链表
 */
public class T160相交链表 {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        //定义两个Set，来存放两个节点，如果有环，则说明有节点在两个链表里面都存在
        Set<ListNode> setA = new HashSet<>();

        while (headA != null) {
            setA.add(headA);
            headA = headA.next;
        }
        while (headB!=null){
            if (!setA.add(headB)){
                return headB;
            }
            headB=headB.next;
        }
        return null;
    }
}
